package com.promise.jokerdream.network

/**
 * HTTP请求辅助类
 * 提供便捷的网络请求方法
 */
object HttpHelper {
    
    private val httpApi: HttpApi = OkHttpApi()
    
    /**
     * 执行GET请求
     * @param url 请求地址
     * @param headers 请求头（可选）
     * @param callback 回调接口
     * @param enableRetry 是否启用result=-2时的自动重试，默认为false（保持向后兼容）
     * @param maxRetries 最大重试次数，默认为10次
     * @param retryDelay 重试延迟时间（毫秒），默认为1000ms
     */
    fun get(
        url: String,
        headers: Map<String, String>? = null,
        callback: IHttpCallback,
        enableRetry: Boolean = false,
        maxRetries: Int = 10,
        retryDelay: Long = 1000L
    ) {
        if (enableRetry) {
            // 使用 lateinit 变量来解决循环引用问题
            lateinit var retryableCallback: RetryableHttpCallback
            
            retryableCallback = RetryableHttpCallback(
                originalCallback = callback,
                maxRetries = maxRetries,
                retryDelay = retryDelay,
                retryRequest = {
                    // 现在可以安全地引用 retryableCallback
                    httpApi.get(url, headers, retryableCallback)
                }
            )
            
            httpApi.get(url, headers, retryableCallback)
        } else {
            httpApi.get(url, headers, callback)
        }
    }
    
}
